1?-use_module(library(lists)). 2
3
4
7
8
9
10cleanTemporalOrderings([Plan,Ordering], ValidOrderings):-
11 fetchTemporalReferences(Plan, TempRefs),!,
12 append([t], TempRefs, FinalTempRefs),
13 cleanTemp(FinalTempRefs, Ordering, ValidOrderings),
14
15 16 17 !.
18
19
20
21
22
23cleanTemp( TempRefs, [], []).
24cleanTemp( TempRefs, [before(X,Y) | Tail] ,[ before(X,Y) | TailTemp]):-
25 member(X, TempRefs),
26 member(Y, TempRefs),
27 cleanTemp( TempRefs, Tail,TailTemp ).
28
29cleanTemp( TempRefs, [before(X,Y) | Tail] ,[ before(X,Unknown ) | TailTemp ] ):-
30
31 member(X,TempRefs),
32 \+ member(Y, TempRefs),
33
34 member(before(Y, Unknown ), Tail),
35
36 cleanTemp( TempRefs, Tail,TailTemp ).
37
38cleanTemp( TempRefs, [before(X,Y) | Tail] , [ before(Unknown,Y ) | TailTemp] ):-
39 member(Y,TempRefs),
40 \+ member(X, TempRefs),
41
42 member(before(Unknown,X), Tail),
43
44 cleanTemp( TempRefs, Tail,TailTemp ).
45
47cleanTemp( TempRefs, [before(X,Y) | Tail] , TailTemp ):-
48 cleanTemp( TempRefs, Tail,TailTemp ).
49
50
51
52fetchTemporalReferences([] ,[]).
53fetchTemporalReferences([happens(A,F,T)|Tail], [ T | TempRefs]):-
54 fetchTemporalReferences(Tail, TempRefs).
55
56fetchTemporalReferences([before(X,Y)|Tail], [ T | TempRefs]):-
57 fetchTemporalReferences(Tail, TempRefs).
58
59
60clean(Z):-cleanTemp([t75,t45,t58,t29,t34],[before(t75,t92),before(t92,t34),before(t29,t75),before(t58,t60),before(t60,t29),before(t45,t58),before(t34,t)],Z)